/**
 * @author Stark
 */
(function($){
	/**
	 * 将指定的字符串进行省略...
	 * @param {Object} str 源字符串
	 * @param {Object} options	[length:显示的长度,fill:填充的样式,fillLength:填充样式的长度]
	 */
	$.fixedTopicWidth = function(str,options) {
		var setting = $.extend({length:50,fill:null,fillLength:3}
			,options||{});
		// (abadsaasdawqeqwc,12,".") --> (asdasdasdasd...)
		var pos = setting.length-str.length;
		if(pos>0) {
			return str;
		}else {
			if(setting.fill) {
				var fs = "";
				for(var i=0;i<setting.fillLength;i++) {
					fs += setting.fill;
				}
				return str.substr(0,setting.length-setting.fillLength)+fs;
			}else{
				return str.substr(0,setting.length);
			}
		}
	}
	
	$.fn.formatTopic = function(options) {
		this.each(function(n){
			// 这个时候的this就不再死包装集对象了，而是这个闭包对象
			// 此时闭包对象中得引用是一个html的节点，要访问就需要$(this)
			$(this).html($.fixedTopicWidth($(this).html(),options));
		})
	}
	
	/**
	 * 使用$.fn来创建包装集插件
	 */
	$.fn.setColor = function() {
		// 此时的this对象指的是整个包装集对象，已经被封装为包装集了
		// 就不用再使用$(this)来封装了
		this.css("color","#0f0");
		// 基于包装集的函数一定要能够支持链式结构
		return this;
	}
	
	/**
	 * 如果state为true就表示readonly,否则表示取消readonly
 	 * @param {Object} state
	 */
	$.fn.setReadOnly = function(state) {
		// 1.找到所有的文本框
		return this.filter("input:text")
			.prop("readonly",state).css("opacity",state?0.5:1.0);
	}
})(jQuery)
